'''
    自动取款机
    1. 账号信息、数据列表
    2. 查询余额
    3. 取钱
    4. 存钱
    5. 退出
    6. 交互界面
'''
money_list = [
    {'userid':'shenshuwei','password':'123456','money':2000},
    {'userid':'zhoujielun','password':'1234567','money':200000},
    {'userid':'miximixi','password':'12345678','money':5000}]


# 登录功能
def log_in(userid,password,login=0):
    for uid,user_dict in enumerate(money_list):
        if user_dict['userid'] == userid:
            if user_dict['password'] == password:
                # login = 1意思是登录成功状态
                login = 1
                print('='*12,'登录成功','='*12)
                # 这里将uid（下标），user_dict（登录的用户的所有信息），login登录标记传出
                return uid,user_dict,login
            else:
                print('密码错误，请重试')
                return uid, user_dict, login
        else:
            print('未找到该账户')
            return uid, user_dict, login
# 余额显示
def show_money(a):
    '''
    :param a: dict
    :return:
    '''
    print('{0:<15}{1:<10}'.format('用户名称','余额/元'))
    print('-'*45)
    print('{0:<19}{1:<10}'.format(a['userid'],a['money']))

# 存钱功能
def save_money(a,number):
    a['money'] =int(a['money'])+int(number)
    print('存钱成功，当前余额为：',a['money'])
    return a

# 取钱功能
def get_money(a,number):
    if int(a['money'])<int(number):
        print('对不起，余额不足')
    else:
        a['money'] =int(a['money'])-int(number)
        money_list[uid] = a
        print('取钱成功，当前余额为：', a['money'])
        return a

# 登录界面
# userlog变量作为判断是否登录,0为未登录 1为登录
userlog = 0
while userlog == 0:
    # userlog用来标记是否登录，若登录成功则值变为1，继续下一步操作
    userlog = 0
    print('='*12, '自动取款机', '='*12)
    print('-' * 40)
    print('请先进行登录')
    userid = input('请输入账号：')
    password = input('请输入密码：')
    # 登录，若登录成功则将相应的字典赋给a,相应的下标赋给uid
    uid,a,userlog = log_in(userid,password)
    while userlog == 1:
        if len(a) != 0:
            print('=' * 12, '自动取款机', '=' * 12)
            print('{:1} {:15} {:8}'.format(' ', '1. 余额', '2. 存钱'))
            print('{:1} {:15} {:8}'.format(' ', '3. 取钱', '4. 退出'))
            print('=' * 40)
    # 进行用户输入获取，执行相应操作
        key = input('请输入要进行的操作：')
        if key == '1':
            show_money(a)
            input('按回车继续..')
        if key == '2':
            save_money_num = input('请输入要存的金额：')
            a = save_money(a,save_money_num)
            # 这一步将改变的数据覆盖到原列表中，因为只是对a字典进行了操作，a只是一个临时存取数据的字典
            money_list[uid] = a
            input('按回车继续..')
        if key == '3':
            get_money_num = input('请输入要取得金额：')
            get_money(a,get_money_num)
            money_list[uid] = a
            input('按回车继续')
        if key == '4':
            print('='*12,'谢谢，再见！','='*12)
            print()
            break

